এক্সেপশন (Exception) হলো প্রোগ্রামে ঘটে যাওয়া এমন একটি অবস্থা বা ঘটনা, যা স্বাভাবিক প্রবাহে বাঁধা সৃষ্টি করে। C++ এ এক্সেপশন ব্যবস্থাপনার জন্য বিশেষ প্রক্রিয়া রয়েছে, যা প্রোগ্রাম চলাকালে কোনো অনাকাঙ্ক্ষিত সমস্যা দেখা দিলে তাকে সনাক্ত করে, পরিচালনা করে এবং প্রয়োজনীয় পদক্ষেপ গ্রহণ করতে সক্ষম করে।
ত্রুটি শনাক্তকরণ এবং ম্যানেজমেন্ট: প্রোগ্রামে বিভিন্ন ত্রুটি (যেমন, ডিভাইড বাই জিরো, মেমোরি অ্যাক্সেস সমস্যা) তৈরি হতে পারে। এক্সেপশন ব্যবস্থাপনা প্রোগ্রামকে সেসব ত্রুটি সনাক্ত এবং ম্যানেজ করতে সাহায্য করে।
প্রোগ্রামের স্থায়িত্ব বজায় রাখা: এক্সেপশন ব্যবস্থাপনা ব্যবহার করে প্রোগ্রামের ত্রুটিপূর্ণ অংশের জন্য সমাধান তৈরি করা যায় এবং প্রোগ্রামকে ত্রুটির পরে চলমান রাখা সম্ভব হয়, ফলে প্রোগ্রামের স্থায়িত্ব বাড়ে।
কোডের সরলতা বৃদ্ধি: এক্সেপশন ব্যবস্থাপনা ব্যবহার করে প্রোগ্রামারেরা ত্রুটি নির্ণয় এবং সমাধান নির্দিষ্ট স্থানে রাখতে পারে, যা কোডের পঠনযোগ্যতা এবং রক্ষণাবেক্ষণ সহজ করে।
অপ্রত্যাশিত পরিস্থিতি হ্যান্ডলিং: প্রোগ্রামে প্রায়ই কিছু অপ্রত্যাশিত অবস্থা তৈরি হতে পারে, যেমন ফাইল না খোলা, মেমোরি আউট অব রেঞ্জ ইত্যাদি। এক্সেপশন ব্যবস্থাপনা প্রোগ্রামকে অপ্রত্যাশিত পরিস্থিতির জন্য প্রস্তুত করে এবং সেই অনুযায়ী কাজ করতে সক্ষম করে।
C++ এ এক্সেপশন ব্যবস্থাপনার জন্য তিনটি মূল কীওয়ার্ড রয়েছে:
try
ব্লকের মধ্যে রাখা হয়।catch
ব্লক ব্যবহার করে নির্দিষ্ট এক্সেপশন ধরা হয় এবং প্রয়োজনীয় সমাধান নেওয়া হয়।throw
ব্যবহার করে একটি এক্সেপশন ছোড়া হয়।#include <iostream>
using namespace std;
int main() {
int numerator, denominator;
cout << "Enter numerator: ";
cin >> numerator;
cout << "Enter denominator: ";
cin >> denominator;
try {
if (denominator == 0) {
throw "Division by zero error"; // এক্সেপশন ছোড়া হচ্ছে
}
cout << "Result: " << numerator / denominator << endl;
} catch (const char* msg) {
cout << "Error: " << msg << endl; // এক্সেপশন ধরা হচ্ছে
}
return 0;
}
বর্ণনা:
try
ব্লকে denominator
এর মান 0
হলে, throw
দিয়ে "Division by zero error" নামে একটি এক্সেপশন ছোড়া হয়েছে।catch
ব্লক সেই এক্সেপশন ধরে এবং msg
এর মাধ্যমে ত্রুটি বার্তা প্রদর্শন করেছে।#include <iostream>
#include <stdexcept> // standard exceptions জন্য
using namespace std;
int main() {
try {
int *arr = new int[5];
throw runtime_error("Runtime error occurred!"); // Runtime exception ছোড়া
delete[] arr; // যদি উপরের লাইন কার্যকর হয় না, তবে এটি চলবে না
}
catch (const runtime_error& e) {
cout << "Caught a runtime_error: " << e.what() << endl;
}
catch (const exception& e) {
cout << "Caught an exception: " << e.what() << endl;
}
return 0;
}
বর্ণনা:
runtime_error
এক্সেপশন ছোড়া হয়েছে এবং catch
ব্লক ব্যবহার করে সেই ত্রুটি হ্যান্ডল করা হয়েছে।e.what()
ফাংশনটি ব্যবহার করে এক্সেপশনের বার্তা প্রদর্শন করা হয়েছে।স্ট্যান্ডার্ড এক্সেপশন: C++ এ stdexcept
লাইব্রেরি থেকে কিছু সাধারণ এক্সেপশন পাওয়া যায়, যেমন logic_error
, runtime_error
, overflow_error
, underflow_error
, ইত্যাদি।
কাস্টম এক্সেপশন: প্রোগ্রামারেরা নিজস্ব প্রয়োজন অনুযায়ী কাস্টম এক্সেপশন তৈরি করতে পারেন।
#include <iostream>
#include <exception>
using namespace std;
class CustomException : public exception {
public:
const char* what() const noexcept override {
return "Custom exception occurred!";
}
};
int main() {
try {
throw CustomException(); // কাস্টম এক্সেপশন ছোড়া হচ্ছে
}
catch (const CustomException& e) {
cout << e.what() << endl;
}
return 0;
}
বর্ণনা:
CustomException
নামে একটি কাস্টম এক্সেপশন ক্লাস তৈরি করা হয়েছে, যা exception
ক্লাস থেকে ইনহেরিট করা।throw CustomException();
ব্যবহার করে কাস্টম এক্সেপশন ছোড়া হয়েছে এবং catch
ব্লক সেটিকে ধরে e.what()
এর মাধ্যমে বার্তা প্রদর্শন করেছে।এক্সেপশন ব্যবস্থাপনা C++ প্রোগ্রামিংয়ে অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি প্রোগ্রামকে স্থায়ী এবং কার্যকর রাখতে সহায়ক।
common.read_more